home *** CD-ROM | disk | FTP | other *** search
/ Intel Web Outfitter Tool Kit 4 / Intel WebOutfitter Tool Kit Version 4.0.iso / public / Outfitter / TKM / scripts / eypc.js < prev    next >
Encoding:
Text File  |  2000-03-13  |  36.5 KB  |  1,212 lines

  1. <!--//--><script language="javascript">
  2. /*
  3. File Dependencies:
  4.     objDL.js                The DHTML Library (dl)
  5.     objTI.js                The TKM Installer (ti)
  6.     objRO.js                The Request Object (ro) - This is included here to provide support for the objTI.js
  7.     objPC.js                The PluginChecker(2).dll Script Wrapper (pc)
  8.     objTU.js                The tkmUpdater script wrapper
  9.     [geo]\constants.js        The localized constants that are called in this file.
  10.  
  11. Required Initialization Method:
  12.     EYPC_Init        Shows the appropriate UI based on the installation status 
  13. */
  14.  
  15.  
  16. //  ####  BEGIN g_sTKMRoot DEFINITION  ####
  17. //  Start at the beginning of the location and find our document root directory
  18. var g_sHref = location.href.toLowerCase();
  19. var g_nEndPos = g_sHref.indexOf('outfitter/');
  20. //  Grab everything up to the end of the word outfitter and add "/tkm/" to set the TKM Root
  21. var g_sTKMRoot = g_sHref.substring(0, (g_nEndPos + 9)) + '/tkm/';
  22. //  Move past the "outfitter/" string and start looking for the geo/lang
  23. var g_nBeginGeo = g_nEndPos + 10;
  24. //  Find the next "/" and we have the geo/lang
  25. var g_nEndGeo = g_sHref.indexOf('/', g_nBeginGeo);
  26. //  Parse out the geo/lang so we know what to use
  27. var g_sGeo = g_sHref.substring(g_nBeginGeo, g_nEndGeo);
  28. //  ####  END g_sTKMRoot DEFINITION  ####
  29.  
  30. //  ####  BEGIN OS SNIFFER  ###
  31. var agt=navigator.userAgent.toLowerCase();
  32.  
  33. if(((agt.indexOf("win98")!=-1) || (agt.indexOf("windows 98")!=-1))) g_sOS = "WIN98";
  34. else if(((agt.indexOf("winnt")!=-1) || (agt.indexOf("windows nt")!=-1))) g_sOS = "WIN2000";
  35. //  ####  END OS SNIFFER  ###
  36.  
  37. /*  ####  BEGIN ADD DEPENDENCIES  ####  */
  38. document.write('<script language="javascript1.2" src="' + g_sTKMRoot + 'scripts/objDL.js">');
  39. document.write('\n<' + '/script>\n');
  40. document.write('<script language="javascript1.2" src="' + g_sTKMRoot + 'scripts/objRO.js">');
  41. document.write('\n<' + '/script>\n');
  42. document.write('<script language="javascript1.2" src="' + g_sTKMRoot + 'scripts/objTI.js">');
  43. document.write('\n<' + '/script>\n');
  44. document.write('<script language="javascript1.2" src="' + g_sTKMRoot + 'scripts/objTU.js">');
  45. document.write('\n<' + '/script>\n');
  46. document.write('<script language="javascript1.2" src="' + g_sTKMRoot + 'scripts/objPC.js">');
  47. document.write('\n<' + '/script>\n');
  48. document.write('<script language="javascript1.2" src="' + g_sTKMRoot + 'scripts/objWTUI.js">');
  49. document.write('\n<' + '/script>\n');
  50. document.write('<script language="javascript1.2" src="' + g_sTKMRoot + 'scenarios/eypc/' + g_sGeo + '/constants.js">');
  51. document.write('\n<' + '/script>\n');
  52. //  ####  END ADD DEPENDENCIES  ####  
  53.  
  54. function EYPC()
  55. {
  56.     //  Accessory Items (Tools)
  57.     this.g_AIs = new Array(0);
  58.     this.AICount = new Number(0);
  59.     this.AddAI = EYPC_AddAI;
  60.  
  61.     //  Accessory Item Dependencies (Tools)
  62.     this.g_AIDeps = new Array(0);
  63.     this.AIDepCount = new Number(0);
  64.     this.AddAIDep = EYPC_AddAIDep;
  65.  
  66.     //  Functions for manipulating the SCREEN objects
  67.     this.g_Screens = new Array(0);
  68.     this.ScreenCount = new Number(0);
  69.     this.AddScreen = EYPC_AddScreen;
  70.     this.ShowScreen = EYPC_ShowScreen;
  71.     this.HideScreen = EYPC_HideScreen;
  72.     this.SwitchScreens = EYPC_SwitchScreens;
  73.  
  74.     //  Helper functions
  75.     this.ConvertKBtoMB = EYPC_ConvertKBtoMB;
  76.     
  77.     //  UI Methods
  78.     this.DefineScreens = EYPC_DefineScreens;
  79.     this.SelectAllAI = EYPC_SelectAllAI;
  80.     this.BtnContinue = EYPC_BtnContinue;
  81.     this.BtnGoBack = EYPC_BtnGoBack;
  82.     this.BtnStartInstall = EYPC_BtnStartInstall;
  83.     this.ChkUpdateTotalSize = EYPC_ChkUpdateTotalSize;
  84.     this.IsInInstallString = EYPC_IsInInstallString;
  85.     this.CheckAIs = EYPC_CheckAIs;
  86.     this.GetAIInfo = EYPC_GetAIInfo;
  87.     this.InstallAIs = EYPC_InstallAIs;
  88.     this.PollAndSwitch = EYPC_PollAndSwitch;
  89.  
  90.     //  Prepare the sandbox to handle the window onload function to 
  91.     //  prevent script errors in IE4
  92.     this.OnReadyStateChange = EYPC_OnReadyStateChange;
  93.     this.window_onload_function = EYPC_OnReadyStateChange;
  94.     this.HandleError = EYPC_HandleError;
  95.  
  96.     this.exit = false;
  97.     this.finalinstall = '';
  98.     this.config = 0;
  99.     this.medium = 'WEB';
  100.     this.numais = 0;
  101.     this.width = 0;
  102.     this.height = 0;
  103.     this.left = 0;
  104.     this.top = 0;
  105.     this.geo = '';
  106.     this.imagepath = '';
  107.     
  108.     //  Constants
  109.     this.GEOiXML = 1;
  110.     this.MAINiXML = 2;
  111.     this.PRODiXML = 3;
  112.  
  113.     this.Init = EYPC_Init;
  114. }
  115.  
  116. function EYPC_ConvertKBtoMB(val)
  117. {
  118.     if (EYPC_ConvertKBtoMB.arguments.length != 0)
  119.     {
  120.         var newval = val/100;
  121.         newval = Math.round(newval);
  122.         newval = newval/10;
  123.         if (newval < 1 && document.layers) newval = '0' + newval;
  124.  
  125.         return newval;
  126.     }
  127.     else
  128.     {
  129.         return 0;
  130.     }
  131. }
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140. /*
  141. Accessory Item Constructor
  142.  
  143. Input from Developer at design time: key, ver
  144. Input/Update from control at run time: key, name, description, ver, size, status, restart
  145. */
  146. function AI(key, ver)
  147. {
  148.     this.key = key;
  149.     this.name = '';
  150.     this.sname = '';
  151.     this.description = '';
  152.     this.version = ver;
  153.     this.size = 0;
  154.     this.status = 1;        // The default status is 1 which equates to unknown as output from the control
  155.     this.restart = false;
  156. }
  157.  
  158. function EYPC_AddAI(key, ver0, ver1)
  159. {
  160.     switch (EYPC_AddAI.arguments.length)
  161.     {
  162.         // If two arguments were passed in then this does not require separate installs for IE and NN
  163.         case 2:
  164.             this.g_AIs[this.AICount] = new AI(key, ver0);
  165.             this.AICount = this.g_AIs.length;
  166.             break;
  167.         
  168.         // If three argument were passed in then this requires separate versions for IE and NN
  169.         case 3:
  170.             if (document.all) this.g_AIs[this.AICount] = new AI(key + 'IE', ver0);
  171.             else if (document.layers) this.g_AIs[this.AICount] = new AI(key + 'NS', ver1);
  172.             this.AICount = this.g_AIs.length;
  173.             break;
  174.     }
  175. }
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182. function AIDEP(key, name, sname, description, version, size, status, restart)
  183. {
  184.     this.key = key;
  185.     this.name = name;
  186.     this.sname = sname;
  187.     this.description = description;
  188.     this.version = version;
  189.     this.size = size;
  190.     this.status = status;
  191.     this.restart = restart;
  192. }
  193.  
  194. function EYPC_AddAIDep(obj)
  195. {
  196.     this.g_AIDeps[this.AIDepCount] = obj;
  197.     this.AIDepCount = this.g_AIDeps.length;
  198. }
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205. function SCREEN(name, content, left, top, zindex, width, height, visibility, backgroundColor, backgroundImage)
  206. {
  207.     this.backgroundImage = backgroundImage;
  208.     this.backgroundColor = backgroundColor;
  209.     this.visibility = visibility;
  210.     this.height = height;
  211.     this.width = width;
  212.     this.zindex = zindex;
  213.     this.top = top;
  214.     this.left = left;
  215.     this.content = content;
  216.     this.name = name;
  217. }
  218.  
  219. function EYPC_AddScreen(obj)
  220. {
  221.     this.g_Screens[this.ScreenCount] = obj;
  222.     this.ScreenCount = this.g_Screens.length;
  223. }
  224.  
  225. function EYPC_ShowScreen(screen)
  226. {
  227.     dl.SetEltZIndex(dl.GetElt(screen), 1000);
  228.     dl.SetEltVisibility(dl.GetElt(screen), true);
  229.     window.scrollTo(0, 0);
  230. }
  231.  
  232. function EYPC_HideScreen(screen)
  233. {
  234.     dl.SetEltZIndex(dl.GetElt(screen), 0);
  235.     dl.SetEltVisibility(dl.GetElt(screen), false);
  236. }
  237.  
  238. function EYPC_SwitchScreens(screen1, screen2)
  239. {
  240.     this.HideScreen(screen1);
  241.     this.ShowScreen(screen2);
  242. }
  243.  
  244.  
  245.  
  246.  
  247.  
  248. // Input to the control: key1#ver1;...
  249. function EYPC_CheckAIs()
  250. {
  251.     var sAIs = '';
  252.     var bIsEmpty = false;
  253.  
  254.     if (this.AICount > 0)
  255.     {
  256.  
  257.         for (i=0; i<this.AICount; i++)
  258.         {
  259.             sAIs += this.g_AIs[i].key + '#' + this.g_AIs[i].version + ';';
  260.         }
  261.     }
  262.     sAIs += "MEDIUM='" + this.medium + "'";
  263.  
  264.     pc.PluginsToCheck(sAIs);
  265.  
  266.     if (parseInt(this.AICount) == 0) bIsEmpty = true;
  267.     else bIsEmpty = false;
  268.  
  269.     this.GetAIInfo(bIsEmpty, 4);
  270.     this.GetAIInfo(bIsEmpty, 2);
  271.     this.GetAIInfo(bIsEmpty, 8);
  272.     this.GetAIInfo(bIsEmpty, 16);
  273.     this.GetAIInfo(bIsEmpty, 1);
  274. }
  275.  
  276. // Output from the control: key1#name1#description1#ver1#size1#status1#restart_needed;...
  277. function EYPC_GetAIInfo(isemtpy, type)
  278. {
  279.     var obj;
  280.  
  281.     this.numais = pc.NumberOfPlugins(type);
  282.  
  283.     // if the isempty flag is true then we are in the CD or EYPC scenario so we need to 
  284.     // add all the plugins into the collection
  285.     if (isemtpy)
  286.     {
  287.         for (var i=0; i<this.numais; i++)
  288.         {
  289.             obj = pc.GetPluginUpdateInfo(i, type);
  290.  
  291.             this.AddAI(obj[0], obj[4]);
  292.             this.g_AIs[this.AICount-1].name = obj[1];
  293.             this.g_AIs[this.AICount-1].sname = obj[2];
  294.             this.g_AIs[this.AICount-1].description = obj[3];
  295.             this.g_AIs[this.AICount-1].size = this.ConvertKBtoMB(obj[5]);
  296.             this.g_AIs[this.AICount-1].status = obj[6];
  297.             this.g_AIs[this.AICount-1].restart = obj[7];
  298.         }
  299.     }
  300.     else
  301.     {
  302.         var bIsDep = true;
  303.         var bIsNewDep = true;
  304.         for (var i=0; i<this.numais; i++)
  305.         {
  306.             // assume that the plugin is a dependency
  307.             bIsDep = true;
  308.             // get the object information
  309.             obj = pc.GetPluginUpdateInfo(i, type);
  310.  
  311.             // is it a declared plugin
  312.             for (var d=0; d<this.AICount; d++)
  313.             {
  314.                 if (this.g_AIs[d].key == obj[0])
  315.                 {
  316.                     bIsDep = false;
  317.                     this.g_AIs[d].name = obj[1];
  318.                     this.g_AIs[d].sname = obj[2];
  319.                     this.g_AIs[d].description = obj[3];
  320.                     this.g_AIs[d].version = obj[4];
  321.                     this.g_AIs[d].size = this.ConvertKBtoMB(obj[5]);
  322.                     this.g_AIs[d].status = obj[6];
  323.                     this.g_AIs[d].restart = obj[7];
  324.                 }
  325.             }
  326.             // if it is not a declared plugin
  327.             if (bIsDep)
  328.             {
  329.                 // is it already a captured dependency
  330.                 for (var b=0; b<this.AIDepCount; b++)
  331.                 {
  332.                     // assume that the dependency has not already been added
  333.                     bIsNewDep = true;
  334.                     if (this.g_AIDeps[b].key == obj[0])
  335.                     {
  336.                         bIsNewDep = false;
  337.                     }
  338.                 }
  339.                 // if it is not already a dependency and need to be installed 
  340.                 // then add it to the collection
  341.                 if ((bIsNewDep) && ((obj[6] != 8) || (obj[6] != 16)))
  342.                 {
  343.                     this.AddAIDep(new AIDEP(obj[0], obj[1], obj[2], obj[3], obj[4], this.ConvertKBtoMB(obj[5]), obj[6], obj[7]));
  344.                 }
  345.             }
  346.         }
  347.     }
  348. }
  349.  
  350. // Input to the control: key1;key2;...
  351. function EYPC_InstallAIs()
  352. {
  353.     pc.InstallPlugins(this.config, this.finalinstall);
  354. }
  355.  
  356. function EYPC_HandleError()
  357. {
  358.     return true;
  359. }
  360.  
  361. function EYPC_OnReadyStateChange()
  362. {
  363.     if (document.readyState == 'complete') eypc.window_onload_function();
  364. }
  365.  
  366. function EYPC_DefineScreens(config)
  367. {
  368.     this.left = 0;            
  369.     this.top = 50;
  370.     this.width = '480';
  371.     this.height = '100%';
  372.     var sContent = '';
  373.  
  374.     var sHTML = '';
  375.     var zindex = 1;
  376.     ////////////////////////////////////////////////////
  377.     //  Name: shInstallWTMScr
  378.     //  Equip Your PC Spec: Get Application (41W)
  379.     ////////////////////////////////////////////////////
  380.     sHTML = '';
  381.     if (this.config == 1)
  382.     {
  383.         sHTML += '<table cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td>' + 
  384.             BBLACKFONT + 
  385.             '<b>' + SHINSTALLWTMSCR_MSG6 + '</b>' + 
  386.             '<br><br>' + 
  387.             SHINSTALLWTMSCR_MSG7 + 
  388.             '<br><br>' + 
  389.             SHINSTALLWTMSCR_MSG8 + 
  390.             EFONT + 
  391.             '</td></tr><tr><td><img src="' + this.imagepath + 'spacer.gif" height="20" width="10"></td></tr>';
  392.     }
  393.     else
  394.     {
  395.         sHTML += '<table cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td>' + 
  396.             BBLACKFONT + '<b>' + SHINSTALLWTMSCR_MSG0 + '</b>' + 
  397.             '<br><br>' + 
  398.             SHINSTALLWTMSCR_MSG1 + 
  399.             '<br><br>' + 
  400.             SHINSTALLWTMSCR_MSG2 + 
  401.             '<br><br>' + 
  402.             '<b>' + SHINSTALLWTMSCR_MSG3 + '</b>' + '2.2 MB' + 
  403.             '<br>' + 
  404.             '<b>' + SHINSTALLWTMSCR_MSG4 + '</b>' + '13 ' + SHINSTALLWTMSCR_MSG5 + ' 28.8 kbps' + EFONT + 
  405.             '</td></tr><tr><td><img src="' + this.imagepath + 'spacer.gif" height="20" width="10"></td></tr>';
  406.     }
  407.         
  408.     if (!ti.install_inprocess) sHTML += '<tr><td><img src="' + this.imagepath + 'spacer.gif" height="1" width="189">' + 
  409.         '<a href="javascript:ti.Install();"><IMG SRC="' + this.imagepath + '(41)w_button_install_now_t.gif" border="0"></a>' + 
  410.         '</td></tr>';
  411.         
  412.     sHTML += '</table>';
  413.     this.AddScreen(new SCREEN('shInstallWTMScr', sHTML, this.left, this.top, zindex, this.width, this.height, 'hidden', false, false));
  414.  
  415.  
  416.     ////////////////////////////////////////////////////
  417.     //  Name: shUpdateWTMScr
  418.     //  Equip Your PC Spec: Update Application (72W)
  419.     ////////////////////////////////////////////////////
  420.     sHTML = '';
  421.     sHTML += '<table cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td>' + 
  422.         BBLACKFONT + '<b>' + SHUPDATEAVAILABLESCR_MSG0 + '</b>' + 
  423.         '<br><br>' + 
  424.         SHUPDATEAVAILABLESCR_MSG1 + 
  425.         '<br><br>' + 
  426.         '<b>' + SHUPDATEAVAILABLESCR_MSG2 + '</b>' + '0.5 MB' + 
  427.         '<br>' + 
  428.         '<b>' + SHUPDATEAVAILABLESCR_MSG3 + '</b>' + '13 ' + SHUPDATEAVAILABLESCR_MSG4 + ' 28.8 kbps' + EFONT + 
  429.         '</td></tr><tr><td><img src="' + this.imagepath + 'spacer.gif" height="20" width="10"></td></tr>';
  430.         
  431.     if (!ti.install_inprocess) sHTML += '<tr><td><img src="' + this.imagepath + 'spacer.gif" height="1" width="189">' + 
  432.         '<a href="javascript:ti.Install();"><IMG SRC="' + this.imagepath + '72w_button_update_now_t.gif" border="0"></a>' + 
  433.         '</td></tr>';
  434.         
  435.     sHTML += '</table>';
  436.     this.AddScreen(new SCREEN('shUpdateWTMScr', sHTML, this.left, this.top, zindex, this.width, this.height, 'hidden', false, false));
  437.  
  438.  
  439.     ////////////////////////////////////////////////////
  440.     //  Name: shWaitToUpdateScr
  441.     //  Equip Your PC Spec: Wait to Update (74W)
  442.     ////////////////////////////////////////////////////
  443.     sHTML = '';
  444.     sHTML += '<table cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td>' + 
  445.         BBLACKFONT + '<b>' + SHWAITTOUPDATESCR_MSG0 + '</b>' + 
  446.         '<br><br>' + 
  447.         SHWAITTOUPDATESCR_MSG1 + 
  448.         '</td></tr><tr><td><img src="' + this.imagepath + 'spacer.gif" height="20" width="10"></td></tr>';
  449.         
  450.     sHTML += '</table>';
  451.     this.AddScreen(new SCREEN('shWaitToUpdateScr', sHTML, this.left, this.top, zindex, this.width, this.height, 'hidden', false, false));
  452.  
  453.  
  454.     ////////////////////////////////////////////////////
  455.     //  Name: shBusyInstallingScr
  456.     //  Equip Your PC Spec: Installation in Progress (73W)
  457.     ////////////////////////////////////////////////////
  458.     sHTML = '';
  459.     sHTML += '<table cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td>' + 
  460.         BBLACKFONT + '<b>' + SHBUSYINSTALLINGSCR_MSG0 + '</b>' + 
  461.         '<br><br>' + 
  462.         SHBUSYINSTALLINGSCR_MSG1 + 
  463.         '</td></tr><tr><td><img src="' + this.imagepath + 'spacer.gif" height="20" width="10"></td></tr>';
  464.         
  465.     sHTML += '</table>';
  466.     this.AddScreen(new SCREEN('shBusyInstallingScr', sHTML, this.left, this.top, zindex, this.width, this.height, 'hidden', false, false));
  467.  
  468.  
  469.     ////////////////////////////////////////////////////
  470.     //  Name: shInstallAIsScr
  471.     //  Equip Your PC Spec: Scan Results Page (14W)
  472.     ////////////////////////////////////////////////////
  473.     var msg = new Array();
  474.     var obj;
  475.     msg[0] = BBLACKFONT + SHINSTALLAISSCR_STATUS0 + EFONT;
  476.     msg[1] = BBLACKFONT + SHINSTALLAISSCR_STATUS1 + EFONT;
  477.     msg[2] = BBLUEFONT + SHINSTALLAISSCR_STATUS2 + EFONT;
  478.     msg[4] = BREDFONT + SHINSTALLAISSCR_STATUS3 + EFONT;
  479.     msg[8] = BBLACKFONT + SHINSTALLAISSCR_STATUS4 + EFONT;
  480.     msg[16] = BBLACKFONT + SHINSTALLAISSCR_STATUS5 + EFONT;
  481.  
  482.     sHTML = '';
  483.  
  484.     // Display initial text and select all checkbox
  485.     sHTML += '<form id="shSelectAIsFrm" name="shSelectAIsFrm">' + 
  486.         '<table name="top" cellspacing="0" cellpadding="0" border="0" width="100%">' + 
  487.         '<tr>' + 
  488.         '<td>' + 
  489.         BBLACKFONT + 
  490.         '<b>' + 
  491.         SHINSTALLAISSCR_MSG0 + 
  492.         '</b><br><br>' + 
  493.         SHINSTALLAISSCR_MSG1 + 
  494.         '<br>' + 
  495.         EFONT + 
  496.         '</td>' + 
  497.         '<td>' + 
  498.         '<img src="' + this.imagepath + 'spacer.gif" height="52" width="1" border="0"><br>' + 
  499.         '<a href="javascript:eypc.BtnContinue()">' + 
  500.         '<img src="' + this.imagepath + '(14)w_button_continue_t.gif" border="0"></a>' + 
  501.         '</td>' + 
  502.         '<td>' + 
  503.         '<img src="' + this.imagepath + 'spacer.gif" height="1" width="13" border="0">' + 
  504.         '</td>' + 
  505.         '</tr>' + 
  506.         '</table>' + 
  507.         '<img src="' + this.imagepath + 'spacer.gif" height="15" width="1" border="0">' + 
  508.         '<table name="top" cellspacing="0" cellpadding="0" border="0" width="268">' + 
  509.         '<tr>' + 
  510.         '<td width="1%">' + 
  511.         '<img src="' + this.imagepath + 'spacer.gif" height="1" width="2" border="0">' + 
  512.         '<input id="shChkSelectAll" name="shChkSelectAll" type="checkbox" onclick="eypc.SelectAllAI();"><br>' + 
  513.         '<img src="' + this.imagepath + 'spacer.gif" height="1" width="27" border="0">' + 
  514.         '</td>' + 
  515.         '<td align="left" width="100%">' +     BBLACKFONT + '<b>' + SHINSTALLAISSCR_MSG2 + '</b>' + EFONT + '</td>' + 
  516.         '<td align="right" width="1%" nowrap>';
  517.  
  518.     sHTML += '</td>' + 
  519.         '<td width="1%">' + 
  520.         '<img src="' + this.imagepath + 'spacer.gif" height="1" width="13" border="0">' + 
  521.         '</td>' + 
  522.         '</tr>' + 
  523.         '</table><br>';
  524.  
  525.     // Get the accessory item information
  526.     for (var i=0; i<this.AICount; i++)
  527.     { 
  528.         obj = this.g_AIs[i];
  529.         {
  530.             sHTML += '<table cellspacing="0" cellpadding="0" border="0" width="100%">' + 
  531.                 '<tr>' + 
  532.                 '<td align="left" width="1%">' + 
  533.                 '<img src="' + this.imagepath + 'spacer.gif" height="1" width="2" border="0">' + 
  534.                 '<input id="ai" name="ai" type="checkbox" value="' + obj.key + '" onclick="eypc.ChkUpdateTotalSize(\'' + obj.key + '\', ' + obj.size + ');"><br>' + 
  535.                 '<img src="' + this.imagepath + 'spacer.gif" height="1" width="27" border="0">' + 
  536.                 '</td>' + 
  537.                 '<td align="left" height="20" width="100%" nowrap>' + 
  538.                 BBLUEFONT + '<b>' + obj.sname + '</b>' + EFONT + 
  539.                 '</td>' + 
  540.                 '<td align="right" height="20" width="100%" nowrap>' + 
  541.                 '<img src="' + this.imagepath + 'spacer.gif" height="1" width="27" border="0">' + 
  542.                 BBLACKFONT + '<b>' + msg[obj.status] + '</b>' + EFONT + 
  543.                 '</td>' + 
  544.                 '<td width="1%">' + 
  545.                 '<img src="' + this.imagepath + 'spacer.gif" height="1" width="13" border="0">' + 
  546.                 '</td>' + 
  547.                 '</tr>' + 
  548.                 '<tr>' + 
  549.                 '<td align="left" valign="top" width="1%">' + 
  550.                 '<img src="' + this.imagepath + 'spacer.gif" height="1" width="27" border="0">' + 
  551.                 '</td>' + 
  552.                 '<td align="left" width="100%">' + 
  553.                 BBLACKFONT + '<b>' + obj.name + '</b>' + EFONT + 
  554.                 '</td>' + 
  555.                 '<td align="right" width="1%" nowrap>' + 
  556.                 BBLACKFONT + SHINSTALLAISSCR_MSG5 + obj.size + ' MB' + '' + EFONT + 
  557.                 '</td>' + 
  558.                 '<td width="1%">' + 
  559.                 '<img src="' + this.imagepath + 'spacer.gif" height="1" width="13" border="0">' + 
  560.                 '</td>' + 
  561.                 '</tr>' + 
  562.                 '<tr>' + 
  563.                 '<td align="left" valign="top">' + 
  564.                 ' ' + 
  565.                 '</td>' + 
  566.                 '<td align="left" valign="top" colspan="2" width="100%">' + 
  567.                 BBLACKFONT + obj.description + EFONT;
  568.  
  569.             if (obj.restart == 1)
  570.             {
  571.                 sHTML += '</td>' + 
  572.                     '<td width="1%">' + 
  573.                     '<img src="' + this.imagepath + 'spacer.gif" height="1" width="13" border="0">' + 
  574.                     '</td>' + 
  575.                     '</tr>' + 
  576.                     '<tr>' + 
  577.                     '<td colspan="4" valign="top">' + 
  578.                     '<img src="' + this.imagepath + '(14)w_pc_restart_t.gif"> ' + 
  579.                     '<span style="font-family:Verdana; font-size:11px">' + 
  580.                     SHINSTALLAISSCR_MSG4 + 
  581.                     '</span>' + 
  582.                     '</td>' + 
  583.                     '</tr>';
  584.             }
  585.             else
  586.             {
  587.                 sHTML += '</td>' + 
  588.                     '<td width="1%">' + 
  589.                     '<img src="' + this.imagepath + 'spacer.gif" height="1" width="13" border="0">' + 
  590.                     '</td>' + 
  591.                     '</tr>';
  592.             }
  593.         
  594.             sHTML += '</table>' + 
  595.             '<img src="' + this.imagepath + 'spacer.gif" height="20" width="20" border="0">';
  596.         }        
  597.     }
  598.     
  599.     // Add the back to top link
  600.     sHTML += '<table cellpading="0" cellspacing="0" border="0" width="100%">' + 
  601.         '<tr><td align="right" width="100%">' + 
  602.         '<a href="javascript:eypc.BtnContinue()">' + 
  603.         '<img src="' + this.imagepath + '(14)w_button_continue_t.gif" border="0"></a>' + 
  604.         '</td>' + 
  605.         '<td width="1%">' + 
  606.         '<img src="' + this.imagepath + 'spacer.gif" height="1" width="13" border="0">' + 
  607.         '</td>' + 
  608.         '</tr>' + 
  609.         '<tr><td align="left" width="100%">' + 
  610.         BBLACKFONT + 
  611.         SHINSTALLAISSCR_MSG6 + 
  612.         EFONT + 
  613.         '</td>' + 
  614.         '</tr>' + 
  615.         '</table>' + 
  616.         '</form>';
  617.  
  618.     sContent = '<table cellpading="0" cellspacing="0" border="0" width="100%"><tr><td align="right">' + 
  619.         BBLACKFONT + '<b>' + SHINSTALLAISSCR_MSG3 + '</b> 0 MB' + EFONT + '</td></tr></table>';
  620.     sHTML += dl.CreateElt('shAITotalSize', sContent, 268, 106, 1001, 200, 20, 'inherit', false, false);
  621.     this.AddScreen(new SCREEN('shInstallAIsScr', sHTML, this.left, this.top, zindex, this.width, this.height, 'hidden', false, false));
  622.  
  623.  
  624.     ////////////////////////////////////////////////////
  625.     //  Name: shConfirmInstallAIsScr
  626.     //  Equip Your PC Spec: Confirm Install page (17W)
  627.     ////////////////////////////////////////////////////
  628.     sHTML = '';
  629.     sHTML += '<table cellspacing="0" cellpadding="0" border="0" width="100%">' +  
  630.         '<tr>' + 
  631.         '<td width="100%" height="80">' + 
  632.         BBLACKFONT + 
  633.         '<b>' + SHCONFIRMINSTALLAISSCR_MSG0 + '</b>' + 
  634.         '<br><br>' + 
  635.         SHCONFIRMINSTALLAISSCR_MSG1 + 
  636.         '<br>' + 
  637.         SHCONFIRMINSTALLAISSCR_MSG2 + 
  638.         '<br><br>' + 
  639.         BBLACKFONT + SHCONFIRMINSTALLAISSCR_MSG7 + EFONT + 
  640.         '<br><br></td>' + 
  641.         '<td width="1%" height="80" align="right">' + 
  642.         '<img src="' + this.imagepath + 'spacer.gif" height="1" width="13" border="0">' + 
  643.         '</td>' + 
  644.         '</tr>' + 
  645.         '<tr>' + 
  646.         '<td align="right" width="100%" colspan="2">' + 
  647.         '<a href="javascript:eypc.BtnGoBack()">' + 
  648.         '<img src="' + this.imagepath + '(17)w_button_goback_t.gif" border="0"></a>' + 
  649.         '<a href="javascript:eypc.BtnStartInstall()">' + 
  650.         '<img src="' + this.imagepath + '(17)w_button_installnow_t.gif" border="0"></a>' + 
  651.         '</td>' + 
  652.         '</tr></table>';
  653.     this.AddScreen(new SCREEN('shConfirmInstallAIsScr', sHTML, this.left, this.top, zindex, this.width, this.height, 'hidden', false, false));
  654.  
  655.  
  656.     ////////////////////////////////////////////////////
  657.     //  Name: shInstallInProcessScr
  658.     //  Equip Your PC Spec: Marketing Message (48W)
  659.     ////////////////////////////////////////////////////
  660.     sHTML = '';
  661.     sHTML += '<table cellspacing="0" cellpadding="0" border="0" width="100%">' +  
  662.         '<tr>' + 
  663.         '<td width="100%">' + 
  664.         BBLACKFONT + 
  665.         '<b>' + SHINSTALLINPROCESSSCR_MSG0 + '</b>' + 
  666.         '<br><br>' + 
  667.         SHINSTALLINPROCESSSCR_MSG1 + 
  668.         '<br><br>' + 
  669.         '<b>' + SHINSTALLINPROCESSSCR_MSG2 + '</b>' + 
  670.         '<br>' + 
  671.         SHINSTALLINPROCESSSCR_MSG3 + 
  672.         '<br><br>' + 
  673.         '<b>' + SHINSTALLINPROCESSSCR_MSG4 + '</b>' + 
  674.         '<br>' + 
  675.         SHINSTALLINPROCESSSCR_MSG5 + 
  676.         EFONT + 
  677.         '</td>' + 
  678.         '<td width="1%" align="right">' + 
  679.         '<img src="' + this.imagepath + 'spacer.gif" height="1" width="13" border="0">' + 
  680.         '</td>' + 
  681.         '</tr>' + 
  682.         '</table>';
  683.     this.AddScreen(new SCREEN('shInstallInProcessScr', sHTML, this.left, this.top, zindex, this.width, this.height, 'hidden', false, false));
  684.  
  685.  
  686.     ////////////////////////////////////////////////////
  687.     //  Create the Hang On Text screen
  688.     //  Name: shInstallWTMInProcessScr
  689.     //  Equip Your PC Spec: Hang on Text (56W)
  690.     ////////////////////////////////////////////////////
  691.     sHTML = '';
  692.     if (this.config == 1)
  693.     {
  694.         sHTML += '<table cellspacing="0" cellpadding="0" border="0" width="100%">' +  
  695.             '<tr>' + 
  696.             '<td width="100%">' + 
  697.             BBLACKFONT + 
  698.             '<b>' + SHINSTALLWTMINPROCESSSCR_MSG0 + '</b>' + 
  699.             '<br>' + 
  700.             SHINSTALLWTMINPROCESSSCR_MSG2 + 
  701.             EFONT + 
  702.             '</td>' + 
  703.             '</tr>' + 
  704.             '</table>';
  705.     }
  706.     else
  707.     {
  708.         sHTML += '<table cellspacing="0" cellpadding="0" border="0" width="100%">' +  
  709.             '<tr>' + 
  710.             '<td width="100%">' + 
  711.             BBLACKFONT + 
  712.             '<b>' + SHINSTALLWTMINPROCESSSCR_MSG0 + '</b>' + 
  713.             '<br>' + 
  714.             SHINSTALLWTMINPROCESSSCR_MSG1 + 
  715.             '</td>' + 
  716.             '</tr>' + 
  717.             '</table>';
  718.     }
  719.     this.AddScreen(new SCREEN('shInstallWTMInProcessScr', sHTML, this.left, this.top, zindex, this.width, this.height, 'hidden', false, false));
  720.  
  721.     if (!this.exit)
  722.     {
  723.         var obj;
  724.  
  725.         for (var i=0; i<this.ScreenCount; i++)
  726.         {
  727.             obj = this.g_Screens[i];
  728.             dl.DrawElt(obj.name, obj.content, obj.left, obj.top, obj.zindex, obj.width, obj.height, obj.visibility, obj.backgroundColor, obj.backgroundImage);
  729.             this.HideScreen(obj.name);
  730.         }
  731.     }
  732.     
  733. }
  734.  
  735.  
  736.  
  737.  
  738.  
  739.  
  740.  
  741. /*
  742. Functions used to handle forms
  743. */
  744. function EYPC_IsInInstallString(obj, str)
  745. {
  746.     var strobj = str.split(';');
  747.     var bReturn = false;
  748.  
  749.     for (var i=0; i<strobj.length; i++)
  750.     {
  751.         if (obj[0] == strobj[i])
  752.         {
  753.             bReturn = true;
  754.             break;
  755.         }
  756.     }
  757.  
  758.     return bReturn;
  759. }
  760.  
  761. function EYPC_BtnContinue()
  762. {
  763.     var sHTML = '';            //  Holder of HTML that we are going to write to the screen
  764.     var sHTML_Sel = '';        //  Holder of the HTML for the tools that were selected for installation
  765.     var sHTML_Req = '';        //  Holder of the HTML for the tools that we have to install because they are dependencies
  766.     var sAIs = '';            //  The list of tools to send to the pluginchecker
  767.     var sAIsSent = '';        //  A holder for sAIs
  768.     var nTotalSize = 0;        //  The total install size of all tools that we have to install
  769.     var nAIs = 0;            //  Number of tools we have to install
  770.     var i = 0;
  771.     var obj;                //  Object returned when we ask for UpdateInfo on it
  772.     var scr;                //  Object pointer to the layer we are going to write the HTML to
  773.     var frm;                //  The form that we are pulling the selected tools from
  774.  
  775.     if (document.layers) frm = document.layers['shInstallAIsScr'].document.forms['shSelectAIsFrm'];
  776.     else if (document.all) frm = document.forms['shSelectAIsFrm'];
  777.  
  778.     // Perform a final check for dependencies
  779.     for (i=0; i<frm.ai.length; i++)
  780.     {
  781.         if (frm.ai[i].checked)
  782.         {
  783.             if (sAIs == '') sAIs += frm.ai[i].value;
  784.             else sAIs += ';' + frm.ai[i].value;
  785.         }
  786.     }
  787.  
  788.     if (sAIs == '') alert(SHCONFIRMINSTALLAISSCR_MSG3);
  789.     else
  790.     {
  791.         /*  Send the tools that were selected to the pluginchecker and find out the number of tools we have to install  */
  792.         nAIs = pc.SetSelectedPlugins(sAIs, true);
  793.  
  794.         sAIsSent = sAIs;
  795.         sAIs = '';
  796.  
  797.         for (i=0; i<nAIs; i++)
  798.         {
  799.             obj = pc.GetPluginUpdateInfo(i);
  800.  
  801.             if (!this.IsInInstallString(obj, sAIsSent))
  802.             {
  803.                 // If the status on the software is unknown(0), unable to determine(1), 
  804.                 // not installed(2), or update available(4) then we need to display it
  805.                 if (obj[6] == 0 || obj[6] == 1 || obj[6] == 2 || obj[6] == 4)
  806.                 {
  807.                     sHTML_Req += '<tr>' + 
  808.                         '<td width="100%">' + 
  809.                         BBLUEFONT + '<b>' + obj[2] + '</b>' + EFONT + 
  810.                         '<br>' + 
  811.                         BBLACKFONT + '<b>' + obj[1] + '</b>' + EFONT + 
  812.                         '</td>' + 
  813.                         '<td width="1%" align="right" valign="bottom" nowrap>' + 
  814.                         BBLACKFONT + SHINSTALLAISSCR_MSG5 + this.ConvertKBtoMB(obj[5]) +  ' MB' + EFONT + 
  815.                         '</td>' + 
  816.                         '<td>' + '<img src="' + this.imagepath + 'spacer.gif" height="1" width="13" border="0">' + 
  817.                         '</td>' + 
  818.                         '</tr>' + 
  819.                         '<tr>' + 
  820.                         '<td colspan="3">' + 
  821.                         '<img src="' + this.imagepath + 'spacer.gif" height="18" width="1" border="0">' + 
  822.                         '</td>' + 
  823.                         '</tr>';
  824.                 }
  825.             }
  826.             else
  827.             {
  828.                 sHTML_Sel += '<tr>' + 
  829.                     '<td width="100%">' + 
  830.                     BBLUEFONT + '<b>' + obj[2] + '</b>' + EFONT + 
  831.                     '<br>' + 
  832.                     BBLACKFONT + '<b>' + obj[1] + '</b>' + EFONT + 
  833.                     '</td>' + 
  834.                     '<td width="1%" align="right" valign="bottom" nowrap>' + 
  835.                     BBLACKFONT + SHINSTALLAISSCR_MSG5 + this.ConvertKBtoMB(obj[5]) +  ' MB' + EFONT + 
  836.                     '</td>' + 
  837.                     '<td>' + '<img src="' + this.imagepath + 'spacer.gif" height="1" width="13" border="0">' + 
  838.                     '</td>' + 
  839.                     '</tr>' + 
  840.                     '<tr>' + 
  841.                     '<td colspan="3">' + 
  842.                     '<img src="' + this.imagepath + 'spacer.gif" height="18" width="1" border="0">' + 
  843.                     '</td>' + 
  844.                     '</tr>';
  845.             }
  846.  
  847.             // If the status on the software is unknown(0), unable to determine(1), 
  848.             // not installed(2), or update available(4) then we need to include it
  849.             // in the total size
  850.             if (this.IsInInstallString(obj, sAIsSent))
  851.             {
  852.                 nTotalSize += parseFloat(this.ConvertKBtoMB(obj[5]));
  853.                 sAIs += obj[0] + ';';
  854.             }
  855.             else
  856.             {
  857.                 if (obj[6] == 0 || obj[6] == 1 || obj[6] == 2 || obj[6] == 4)
  858.                 {
  859.                     sAIs += obj[0] + ';';
  860.                     nTotalSize += parseFloat(this.ConvertKBtoMB(obj[5]));
  861.                 }
  862.             }
  863.         }
  864.         // Make the value that is being shown the same as was displayed 
  865.         // when the user was selecting software tools
  866.         nTotalSize = nTotalSize*10;
  867.         nTotalSize = Math.round(nTotalSize);
  868.         nTotalSize = nTotalSize/10;
  869.  
  870.         /*  Find the confirm screen and add it's content  */
  871.         for (iLoop=0; iLoop<this.g_Screens.length; iLoop++)
  872.         {
  873.             if (this.g_Screens[iLoop].name == 'shConfirmInstallAIsScr')
  874.             {
  875.                 sHTML += this.g_Screens[iLoop].content;
  876.                 break;
  877.             }
  878.         }
  879.  
  880.         sHTML += '<table cellspacing="0" cellpadding="0" border="0" width="100%"><tr>' + 
  881.             '<td align="right" width="100%" height="27" valign="bottom">' + 
  882.             BBLACKFONT + 
  883.             '<b>' + SHCONFIRMINSTALLAISSCR_MSG4 + ' </b>' + nTotalSize + ' MB' + 
  884.             EFONT + 
  885.             '</td>' + 
  886.             '<td width="1%" align="right">' + 
  887.             '<img src="' + this.imagepath + 'spacer.gif" height="1" width="13" border="0">' + 
  888.             '</td>' + 
  889.             '</tr>' + 
  890.             '<tr>' + 
  891.             '<td colspan="2" height="30" width="100%"> ' + 
  892.             '</td>' + 
  893.             '</tr>' + 
  894.             '<tr>' + 
  895.             '<td colspan="2" height="20" width="100%">' + 
  896.             BBLACKFONT + '<b>' + SHCONFIRMINSTALLAISSCR_MSG5 + '</b>' + EFONT + 
  897.             '</td>' + 
  898.             '</tr>' + 
  899.             '<tr>' + 
  900.             '<td colspan="2">' + 
  901.             '<img src="' + this.imagepath + 'spacer.gif" height="8" width="1" border="0">' + 
  902.             '</td>' + 
  903.             '</tr>' + 
  904.             '</table>' + 
  905.             '<table cellspacing="0" cellpadding="0" width="100%" border="0">' + 
  906.             sHTML_Sel + 
  907.             '<tr>' + 
  908.             '<td width="100%" colspan="3">' + '<img src="' + this.imagepath + 'spacer.gif" height="15" width="1" border="0">' + 
  909.             '</td>' + 
  910.             '</tr>';
  911.         if (sHTML_Req != '')
  912.         {
  913.             sHTML += '<tr>' + 
  914.                 '<td width="100%" colspan="3">' + '<span style="font-family:Verdana; font-size:11px">' + 
  915.                 SHCONFIRMINSTALLAISSCR_MSG6 + '</span>' + '</td>' + 
  916.                 '</tr>' + 
  917.                 '<tr>' + 
  918.                 '<td width="100%" colspan="3">' + '<img src="' + this.imagepath + 'spacer.gif" height="10" width="1" border="0">' + 
  919.                 '</td>' + 
  920.                 '</tr>' + 
  921.                 sHTML_Req;
  922.         }
  923.         
  924.         sHTML += '</table>';
  925.         this.finalinstall = sAIs + "MEDIUM='" + this.medium + "'";
  926.  
  927.         scr = dl.GetElt('shConfirmInstallAIsScr');
  928.         if (document.layers)
  929.         {
  930.             scr.document.open();
  931.             scr.document.write(sHTML);
  932.             scr.document.close();
  933.         }
  934.         else if (document.all)
  935.         {
  936.             scr.innerHTML = sHTML;
  937.         }
  938.  
  939.         this.SwitchScreens('shInstallAIsScr', 'shConfirmInstallAIsScr');
  940.     }
  941. }
  942.  
  943. function EYPC_SelectAllAI()
  944. {
  945.     var ctl;
  946.     var frm;
  947.     var bState;
  948.     var sContent;
  949.  
  950.     if (document.layers) ctl = document.layers['shInstallAIsScr'].document.layers['shAITotalSize'].document;
  951.     else if (document.all) ctl = document.all['shAITotalSize'];
  952.  
  953.     if (document.layers) frm = document.layers['shInstallAIsScr'].document.forms['shSelectAIsFrm'];
  954.     else if (document.all) frm = document.forms['shSelectAIsFrm'];
  955.  
  956.     if (EYPC_SelectAllAI.arguments.length == 1)
  957.     {
  958.         frm.shChkSelectAll.checked = false;
  959.         for (var i=0; i<frm.ai.length; i++)
  960.         {        
  961.             for (var j=0; j<this.AICount; j++)
  962.             {            
  963.                 if (frm.ai[i].value == this.g_AIs[j].key)
  964.                 {
  965.                     frm.ai[i].checked = false;                        
  966.                     g_shTotalSize -= parseFloat(this.g_AIs[j].size);
  967.                     if(g_shTotalSize < 0) g_shTotalSize -= g_shTotalSize;                
  968.                 }
  969.             }
  970.         }
  971.     }
  972.     
  973.     if (frm.shChkSelectAll.checked) bState = true;
  974.     else bState = false;
  975.  
  976.     for (var i=0; i<frm.ai.length; i++)
  977.     {
  978.         for (var j=0; j<this.AICount; j++)
  979.         {
  980.             if (frm.ai[i].value == this.g_AIs[j].key)
  981.             {
  982.                 if (this.g_AIs[j].status == 2)
  983.                 {
  984.                     if (bState)
  985.                     {
  986.                         if (!frm.ai[i].checked)
  987.                         {
  988.                             frm.ai[i].checked = bState;
  989.                             g_shTotalSize += parseFloat(this.g_AIs[j].size);
  990.                         }
  991.                     }
  992.                     else
  993.                     {
  994.                         frm.ai[i].checked = bState;
  995.                         g_shTotalSize -= parseFloat(this.g_AIs[j].size);
  996.                         if(g_shTotalSize < 0) g_shTotalSize -= g_shTotalSize;
  997.                     }
  998.                 }
  999.                 break;
  1000.             }
  1001.         }
  1002.     }
  1003.  
  1004.     /*
  1005.     for (var i=0; i<this.AICount; i++)
  1006.     {
  1007.         if (this.g_AIs[i].status == 2)
  1008.         {
  1009.             if (bState) g_shTotalSize += parseFloat(this.g_AIs[i].size);
  1010.             else  g_shTotalSize -= parseFloat(this.g_AIs[i].size);
  1011.         }
  1012.     }
  1013.     */
  1014.     g_shTotalSize = g_shTotalSize*10;
  1015.     g_shTotalSize = Math.round(g_shTotalSize);
  1016.     g_shTotalSize = g_shTotalSize/10;
  1017.     
  1018.     sContent = '<table cellpading="0" cellspacing="0" border="0" width="100%"><tr><td align="right">' + 
  1019.         BBLACKFONT + '<b>' + SHINSTALLAISSCR_MSG3 + '</b> ' + g_shTotalSize + ' MB' + EFONT + '</td></tr></table>';
  1020.  
  1021.     if (document.layers)
  1022.     {
  1023.         ctl.open();
  1024.         ctl.write(sContent);
  1025.         ctl.close();
  1026.     }
  1027.     else if (document.all)
  1028.     {
  1029.         ctl.innerHTML = sContent;
  1030.     }
  1031. }
  1032.  
  1033. function EYPC_ChkUpdateTotalSize(key, size)
  1034. {
  1035.     var ctl;
  1036.     var frm;
  1037.     var sContent = '';
  1038.  
  1039.     if (document.layers) ctl = document.layers['shInstallAIsScr'].document.layers['shAITotalSize'].document;
  1040.     else if (document.all) ctl = document.all['shAITotalSize'];
  1041.  
  1042.     if (document.layers) frm = document.layers['shInstallAIsScr'].document.forms['shSelectAIsFrm'];
  1043.     else if (document.all) frm = document.forms['shSelectAIsFrm'];
  1044.  
  1045.     for (var i=0; i<frm.ai.length; i++)
  1046.     {
  1047.         if (frm.ai[i].value == key)
  1048.         {
  1049.             if (frm.ai[i].checked) g_shTotalSize += size;
  1050.             else
  1051.             {
  1052.                 frm.shChkSelectAll.checked = false;
  1053.                 g_shTotalSize -= size;
  1054.             }
  1055.         }
  1056.     }
  1057.  
  1058.     g_shTotalSize = g_shTotalSize*10;
  1059.     g_shTotalSize = Math.round(g_shTotalSize);
  1060.     g_shTotalSize = g_shTotalSize/10;
  1061.  
  1062.     sContent = '<table cellpading="0" cellspacing="0" border="0" width="100%"><tr><td align="right">' + 
  1063.         BBLACKFONT + '<b>' + SHINSTALLAISSCR_MSG3 + '</b> ' + g_shTotalSize + ' MB' + EFONT + '</td></tr></table>';
  1064.  
  1065.     if (document.layers)
  1066.     {
  1067.         ctl.open();
  1068.         ctl.write(sContent);
  1069.         ctl.close();
  1070.     }
  1071.     else if (document.all)
  1072.     {
  1073.         ctl.innerHTML = sContent;
  1074.     }
  1075. }
  1076.  
  1077. function EYPC_BtnGoBack()
  1078. {
  1079.     this.SwitchScreens('shConfirmInstallAIsScr', 'shInstallAIsScr');
  1080. }
  1081.  
  1082. function EYPC_BtnStartInstall()
  1083. {
  1084.     this.SwitchScreens('shConfirmInstallAIsScr', 'shInstallInProcessScr');
  1085.     eypc.InstallAIs();
  1086. }
  1087.  
  1088. function EYPC_PollAndSwitch(scr1, scr2)
  1089. {
  1090.     if (pc.IsWOTKInstallerRunning()) setTimeout('eypc.PollAndSwitch("' + scr1 + '", "' + scr2 + '")', 3000);
  1091.     else this.SwitchScreens(scr1, scr2);
  1092. }
  1093.  
  1094. /*
  1095. Sandbox Handler Initialization
  1096.  
  1097. Need to determine the UI to use.
  1098. */
  1099. function EYPC_Init()
  1100. {
  1101.     //  Initialize any components that require it
  1102.     ti.Init(this.config);
  1103.     wtui.Init();
  1104.     tu.Init();
  1105.     
  1106.     this.imagepath = g_sTKMRoot + 'scenarios/eypc/' + g_sGeo + '/';
  1107.     
  1108.     var bInstallRequired = true;
  1109.     var sCurrentMedium = 'WEB';
  1110.     
  1111.     // Do we continue processing?
  1112.     if (!this.exit)
  1113.     {
  1114.         // Initialize the control with the AIs that we need
  1115.         if (ti.status == ti.INSTALLED)
  1116.         { 
  1117.             pc.Init();
  1118.             this.CheckAIs();        
  1119.         } 
  1120.         
  1121.         // Create the screens needed for the scenario, this method is attached and defined
  1122.         // by the scenario javascript file
  1123.         this.DefineScreens();
  1124.  
  1125.         // Start with the appropriate screen
  1126.         // The shInstallWTMScr screen always has install instructions for the Updater Service
  1127.         // The shInstallAIsScr screen begins the installation of software tools
  1128.         if (ti.install_inprocess)
  1129.         {
  1130.             ti.Install();
  1131.             this.ShowScreen('shInstallWTMInProcessScr')
  1132.         }
  1133.         else
  1134.         {
  1135.             if (bInstallRequired)
  1136.             {
  1137.                 if (ti.status == ti.NOT_INSTALLED) this.ShowScreen('shInstallWTMScr');
  1138.                 else if (ti.status == ti.UPDATE_REQ)
  1139.                 {
  1140.                     //  If the app is running then we are going to assume that the install was kicked off from the CD
  1141.                     
  1142.                     if(document.layers)
  1143.                     { 
  1144.                         pc.Init();                        
  1145.                         if (pc.IsWOTKInstallerRunning())
  1146.                         {
  1147.                             this.ShowScreen('shWaitToUpdateScr');
  1148.                             setTimeout('eypc.PollAndSwitch("' + 'shWaitToUpdateScr' + '", "' + 'shUpdateWTMScr' + '")', 3000);
  1149.                         }
  1150.                         else this.ShowScreen('shUpdateWTMScr');
  1151.                     }
  1152.                     else if(document.all)
  1153.                     {
  1154.                         if (tu.IsTKMFileInUse('WOTKINSTALLUI2.exe') == 'YES')
  1155.                         {
  1156.                             this.ShowScreen('shWaitToUpdateScr');
  1157.                             setTimeout('eypc.PollAndSwitch("' + 'shWaitToUpdateScr' + '", "' + 'shUpdateWTMScr' + '")', 3000);
  1158.                         }
  1159.                         else this.ShowScreen('shUpdateWTMScr');
  1160.                     }                    
  1161.                 }
  1162.                 else if (ti.status == ti.PATCH_REQ)
  1163.                 {
  1164.                     ti.Install();
  1165.                 }
  1166.                 else if (ti.status == ti.INSTALLED)
  1167.                 {    
  1168.                     //  We cannot let an install take place if the mediums do not match
  1169.                     if (wtui.GetInstallMedium() == 1) sCurrentMedium = 'CD';
  1170.  
  1171.                     if (pc.IsWOTKInstallerRunning() && (this.medium != sCurrentMedium))
  1172.                     {
  1173.                         this.ShowScreen('shBusyInstallingScr');
  1174.                         setTimeout('eypc.PollAndSwitch("' + 'shBusyInstallingScr' + '", "' + 'shInstallAIsScr' + '")', 3000);
  1175.                     }
  1176.                     else this.ShowScreen('shInstallAIsScr');                    
  1177.                 }
  1178.             }
  1179.             else this.ShowScreen('shNoInstallRequiredScr');
  1180.         }
  1181.  
  1182.         // This is a patch for IE4 only, the browser does not handle the content of the sandbox
  1183.         // at the same time the the dhtml is running and generates errors.
  1184.         // if there is a window onload function capture it, clear it, and re-assign it
  1185.         if ((window.onload) && (document.all))
  1186.         {
  1187.             this.window_onload_function = window.onload;
  1188.             window.onload = '';
  1189.             document.onreadystatechange = this.OnReadyStateChange;
  1190.         }
  1191.     }
  1192. }
  1193.  
  1194.  
  1195. /*  Create this scripts main object  */
  1196. var eypc = new EYPC();
  1197.  
  1198.  
  1199. /*  Override window events  */
  1200. window.onerror = eypc.HandleError;    // now we catch all the script errors
  1201.  
  1202.  
  1203. /*  Global variables  */
  1204. var g_shTotalSize = 0;
  1205.  
  1206.  
  1207. /*  Constants  */
  1208. var BREDFONT = '<font face="Verdana" size="2" color="#ff0000">';
  1209. var BBLUEFONT = '<font face="Verdana" size="2" color="#0000ff">';
  1210. var BBLACKFONT = '<font face="Verdana" size="2" color="#000000">';
  1211. var EFONT = '</font>';
  1212. //--></script>